package map;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
/**
 * Map的遍历，支持三种遍历方式:
 * 1.遍历所有的key
 * 2.遍历所有的value-------------相对不常用
 * 3.遍历所有的Entry(键值对)
 */
public class MapDemo3 {
    public static void main(String[] args) {
        Map<String,Integer> map=new LinkedHashMap<>();
        map.put("语文",95);
        map.put("数学",100);
        map.put("英语",80);
        map.put("物理",86);
        map.put("化学",90);
        System.out.println(map);//{语文=95, 数学=100, 英语=80, 物理=86, 化学=90}
         /*
         遍历所有的key
         Set<K> keySet()
         将当前map中所有的key以一个Set集合的形式返回
         */
        Set<String> keySet=map.keySet();
        for(String key:keySet){
            Integer  value=map.get(key);
            System.out.println("key:"+key+",value:"+value);
        }
        /*
        遍历所有的value
         Collection<V> values()
         将当前map中所有的value以一个集合的形式返回
         */
        Collection<Integer> values=map.values();
        for(Integer value:values){
            System.out.println("value:"+value);
        }
         /*
         遍历所有的Entry(键值对)
         Set<Map.Entry<K,V>> entrySet()
         将当前map中的每一组键值对以一个Entry实例表示，并将所有键值对以Set集合返回
         */
        Set<Map.Entry<String,Integer>> entrySet=map.entrySet();
        for(Map.Entry<String,Integer> entry:entrySet){//e代表每一个键值对
            String key=entry.getKey();//获取key键
            Integer value=entry.getValue();//获取value值
            System.out.println("key:"+key+",value:"+value);
        }

    }
}
